package com.lagou.work.task02.classloader;


/**
 * 自定义类加载器，实现加载远程class类到本地调用
 * 注意事项：
 * 1.目前通过自定义类加载器去加载的远程类，比如加载远程BubbleSort.class排序类，这个远程类必须是编译后的class文件，
 *   如果直接加载远程java文件，没办法通过反射机制动态获取远程类中的成员变量和方法；
 * 2.远程类里面不能包含包名信息，如“package com.lagou.work.task02;”,不然编译成class文件了,运行自定义类加载器时会报“java.lang.NoClassDefFoundErro”的异常,
 *  必须去掉包名信息，再手动编译下就ok;
 */
public class SelfDefineClassLoader extends ClassLoader {
    private byte[] bytes;

    public SelfDefineClassLoader(ClassLoader parent, byte[] bytes) {
        super(parent);
        this.bytes = bytes;
    }

    public SelfDefineClassLoader(byte[] bytes) {
        this.bytes = bytes;
    }

    public Class<?> findClass(String name) throws ClassNotFoundException {
        return defineClass(name, bytes, 0, bytes.length);
    }

}
